#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
//
//int cmp(const void* e1, const void* e2)
//{
//	return *(int*)e1 - *(int*)e2;
//}
//int main()
//{
//	int arr[] = { 0,1,2,3,4,5,6,7,8 };
//	int arrSize = sizeof(arr) / sizeof(arr[0]);
//	int* nums = (int*)malloc(sizeof(int) * arrSize);
//	qsort(arr, arrSize, 4, cmp);
//    for (int i = 0; i < arrSize; ++i)
//    {
//        int tmp = arr[i];
//        int sum = 0;
//        while (tmp)
//        {
//            ++sum;
//            tmp &= tmp - 1;
//        }
//        nums[i] = sum;
//    }
//    qsort(nums, arrSize, 4, cmp);
//    for (int i = arrSize - 1; i >= 0; --i)
//    {
//        int tmp = arr[i];
//        int sum = 0;
//        while (tmp)
//        {
//            ++sum;
//            tmp &= tmp - 1;
//        }
//        for (int j = arrSize - 1; j >= 0; --j)
//        {
//            if (sum == nums[j])
//            {
//                int t = nums[j];
//                nums[j] = arr[i];
//                arr[i] = t;
//                break;
//            }
//        }
//    }
//	return 0;
//}

#include <string.h>
#include <ctype.h>
//void fun(char* s)
//{
//	int f = 0;
//	int p = 0;
//	for (int i = 0; i < strlen(s); ++i)
//	{
//		if (isalpha(s[i]))
//		{
//			s[p++] = s[i];
//			s[i] = '*';
//			f = 1;
//		}
//		else if(f)
//		{
//			s[p++] = '*';
//		}
//	}
//	s[p] = 0;
//}
//int main()
//{
//	char s[] = "*****A**BC*DEF**G*******";
//	fun(s);
//	puts(s);
//	return 0;
//}

//int main()
//{
//	int temperatures[] = { 73,74,75,71,69,72,76,73 };
//	int temperaturesSize = sizeof(temperatures) / sizeof(temperatures[0]);
//	int* arr = (int*)malloc(sizeof(int) * temperaturesSize);
//	int index = 0;
//	for (int i = 0; i < temperaturesSize; ++i)
//	{
//		int f = 0;
//		for (int j = i + 1; j < temperaturesSize; ++j)
//		{
//			if (temperatures[i] < temperatures[j])
//			{
//				arr[index++] = j - i;
//				f = 1;
//				break;
//			}
//		}
//		if (!f || i == temperaturesSize - 1)
//		{
//			arr[index++] = 0;
//		}
//	}
//	return 0;
//}


int main()
{
	char words[][10] = { "cat","bt","hat","tree" };
	int wordsSize = sizeof(words) / sizeof(words[0]);
	char chars[] = "atach";
    int arr[26] = { 0 };
    int ans = 0;
    char* chp = chars;
    for (int i = 0; i < wordsSize; ++i)
    {
        while (*chp)
        {
            ++arr[*chp - 'a'];
            ++chp;
        }
        char* p = *(words + i);
        int sum = 0;
        while (*p)
        {
            --arr[*p - 'a'];
            if (arr[*p - 'a'] < 0)
            {
                for (int j = 0; j < 26; ++j)
                {
                    arr[j] = 0;
                }
                sum = 0;
                goto there;
            }
            ++sum;
            ++p;
        }
    there:
        ans += sum;
        for (int j = 0; j < 26; ++j)
        {
            arr[j] = 0;
        }
    }
	return 0;
}